1. Field of the Invention
The present invention relates to the field of computer system performance. More specifically, the present invention relates to the optimization of hard drive performance.
2. Background Information
Definitions used within this application:
Transfer Block Size: The number of blocks (sectors) transferred from the hard drive to the hard drive""s host processor before the hard drive issues a processor interrupt. Access Block Size: The number of blocks (sectors) requested by the basic input/output service (BIOS) or a device driver.
Due to the consuming public""s awareness of various performance specifications, many hard drive vendors have opted for faster external interface timing specifications. However for various architectural reasons, having faster external interface timing does not necessarily result in overall faster throughput. A faster external interface could result in decreased throughput if the hard drive is unable to sustain the reading of data from sequential sectors without experiencing missed revolutions.
Many hard drives employ a single ported internal data buffer which must be multiplexed between the external interface and the internal read/write heads. By having very aggressive external interface timing the proper balance of access between the external interface, the internal read/write heads, and the internal data buffer might not be achieved, causing the internal read/write heads being denied access to the single ported internal data buffer at the beginning of a sector, resulting in missed disk revolutions. In other words, no data will be transferred between the media and the single ported internal data buffer during these revolutions.
The frequency of having missed disk revolutions is dependent upon the Transfer Block Size, the Access Block Size, and the ability of the drive to intelligently manage its buffer. The Access Block Size is an attribute of the Operating System and Device Driver or BIOS being used to access the hard drive. Transfer Block Size may be negotiated between the software running on the host processor (either the Device Driver or BIOS) and the hard drive.
Today, most BIOS either do not account for differences in hard drives and arbitrarily assign a Transfer Block Size, or allow a user to interrupt the boot-up process, and specify a Transfer Block Size. The user specified Transfer Block Size is stored in CMOS1 memory where it is retained for subsequent boot-ups until it is overridden with a new value. However, for personal computer systems, only the very sophisticated users understand how the hard drives"" overall performance can be fine tuned by altering the Transfer Block Size. Even for these sophisticated users, very little help is available for them to ascertain what the appropriate Transfer Block Size should be.
Thus, it is desirable if hard drive performance can be improved with a more user friendly approach. As will be described in more detail below, the present invention achieves these and other desirable results.
A hard drive optimization function is provided to the set-up utility of the BIOS of a computer system. When executed, the optimization function benchmarks the hard drive""s overall performance with sequential accesses employing various Access Block Sizes and Transfer Block Sizes. In one embodiment, the optimization function determines the optimal Transfer Block Size by comparing the average throughput (kbytes/sec) for a number of Transfer Block Sizes. The average throughput for each Transfer Block Size is determined through a number of sequential accesses made using different Access Block Sizes. The Access Block Sizes are systematically synthesized in accordance to a number of benchmarking parameters. The number of Transfer Block Sizes examined are predetermined.
In one embodiment, the benchmarking parameters include an initial access block size, an increment size, and a maximum access block size,. The benchmarking parameters may be specified by the user through the user interface of the set-up utility. Preferably, the benchmarking parameters may be specified indirectly by having the user specify an operating environment type and/or defaulted.
Preferably, the user is provided with feedback on the benchmarking results.